一.简答题
1.JS异步编程：1.因为JS是采用单线程工作的模式，同步的编程模式遇到耗时任务时会严重影响编程进度，影响用户体验，进而出现了异步编程，异步模式就是运行环境API下达任务开启指令后，不做等待代码继续执行其他。
             2.异步编程的根基就是回调函数（由调用者定义，交给执行者执行的函数），为了避免出现回调地狱的问题出现了Promise
2.EventLoop:事件循环，负责监听调用栈和消息队列的，监听到调用栈中任务事件都结束后，它就像从消息队列中取出当前排在第一的函数放入调用栈进行执行。
3.消息队列：异步调用事件时，将代办事件任务按顺序排队存放的地方
4.宏任务，微任务：宏任务就是消息队列中的任务，绝大部分异步调用都是作为宏任务执行的，微任务包含：Promise、MutationObserver、node中的process.nextTick,开始执行宏任务，到本轮结束后先寻找是否有可执行的微任务，有的话就执行，否则开启新的一轮宏任务

二.代码题